"""
@Project:p9_exe
@File:Myalipay.py
@Author:郑凯乐
@Date:18:27
"""
from django.conf import settings

# 导入支付宝
from alipay import AliPay


# 定义自己的视图类
class MyAlipay():
    def __init__(self, *args, **kwargs):
        # 读取app私钥
        self.app_private_key_string = open(settings.APP_PRIVATE_KEY_PATH, 'r').read()
        # 读取支付宝公钥
        self.alipay_public_key_string = open(settings.ALIPAY_PUBLIC_KEY_PATH, 'r').read()
        # 继承父类的初始化部分
        super().__init__(*args, **kwargs)

        # 自己定义
        self.alipay = AliPay(
            appid=settings.ZFB_APPID,
            app_private_key_string= self.app_private_key_string,
            alipay_public_key_string= self.alipay_public_key_string,
            app_notify_url=None,
            sign_type="RSA2", # 签名算法
            debug=True,  # 所有的请求 都会定向到沙箱服务
        )
    # 获取支付地址
    def get_pay_url(self, order_id, total_amount,return_url):
        # 订单字符串
        order_string = self.alipay.api_alipay_trade_page_pay(
            subject="商家收款",
            out_trade_no=order_id,
            total_amount=total_amount,
            return_url=return_url, # 回调地址
            notify_url=return_url,
        )

        # 支付地址
        return "https://openapi.alipaydev.com/gateway.do?" + order_string

    def check(self,out_trade_no):
        try:
            # 主动查询支付结果
            print(">>>查询订单",out_trade_no)
            pay_result = self.alipay.api_alipay_trade_query(out_trade_no)
            print("看看情况1>>",pay_result)
            # 获取支付状态
            trade_staus = pay_result.get("trade_status")
            print("再看看2")
            if trade_staus == "TRADE_SUCCESS":
                # 支付成功
                return True
                # 删除购物车已购买的商品
            else:
                # 支付失败
                return False
        except Exception as e:
            print("校验支付异常",e)
            return False
# 商家账号
# cyrolr3318@sandbox.com
# 买家账号
# gxgdrw1698@sandbox.com
